 /*
  * $Header: /cvshome/build/org.osgi.service.event/src/org/osgi/service/event/EventConstants.java,v 1.14 2006/07/12 21:06:18 hargrave Exp $
  *
  * Copyright (c) OSGi Alliance (2005, 2006). All Rights Reserved.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */

 package org.osgi.service.event;

 import org.osgi.framework.Constants;

 /**
  *
  * Defines standard names for <code>EventHandler</code> properties.
  *
  * @version $Revision: 1.14 $
  */
 public interface EventConstants {

     /**
      * Service registration property (named <code>event.topic</code>)
      * specifying the <code>Event</code> topics of interest to a Event Handler
      * service.
      * <p>
      * Event handlers SHOULD be registered with this property. The value of the
      * property is an array of strings that describe the topics in which the
      * handler is interested. An asterisk ('*') may be used as a trailing
      * wildcard. Event Handlers which do not have a value for this property must
      * not receive events. More precisely, the value of each entry in the array
      * must conform to the following grammar:
      *
      * <pre>
      * topic-description := '*' | topic ( '/*' )?
      * topic := token ( '/' token )*
      * </pre>
      *
      * @see Event
      */
     public static final String EVENT_TOPIC = "event.topics";

     /**
      * Service Registration property (named <code>event.filter</code>)
      * specifying a filter to further select <code>Event</code> s of interest
      * to a Event Handler service.
      * <p>
      * Event handlers MAY be registered with this property. The value of this
      * property is a string containing an LDAP-style filter specification. Any
      * of the event's properties may be used in the filter expression. Each
      * event handler is notified for any event which belongs to the topics in
      * which the handler has expressed an interest. If the event handler is also
      * registered with this service property, then the properties of the event
      * must also match the filter for the event to be delivered to the event
      * handler.
      * <p>
      * If the filter syntax is invalid, then the Event Handler must be ignored
      * and a warning should be logged.
      *
      * @see Event
      * @see org.osgi.framework.Filter
      */
     public static final String EVENT_FILTER = "event.filter";

     /**
      * The Distinguished Name of the bundle relevant to the event.
      */
     public static final String BUNDLE_SIGNER = "bundle.signer";

     /**
      * The Bundle Symbolic Name of the bundle relevant to the event.
      */
     public static final String BUNDLE_SYMBOLICNAME = "bundle.symbolicName";

     /**
      * The Bundle id of the bundle relevant to the event.
      *
      * @since 1.1
      */
     public static final String BUNDLE_ID = "bundle.id";

     /**
      * The Bundle object of the bundle relevant to the event.
      *
      * @since 1.1
      */
     public static final String BUNDLE = "bundle";

     /**
      * The actual event object. Used when rebroadcasting an event that was sent
      * via some other event mechanism.
      */
     public static final String EVENT = "event";

     /**
      * An exception or error.
      */
     public static final String EXCEPTION = "exception";

     /**
      * Must be equal to the name of the Exception class.
      *
      * @since 1.1
      */
     public static final String EXCEPTION_CLASS = "exception.class";

     /**
      * Must be equal to exception.getMessage()
      */
     public static final String EXCEPTION_MESSAGE = "exception.message";

     /**
      * A human-readable message that is usually not localized.
      */
     public static final String MESSAGE = "message";

     /**
      * A service
      */

     public static final String SERVICE = "service";

     /**
      * A service's id.
      */
     public static final String SERVICE_ID = Constants.SERVICE_ID;

     /**
      *
      * A service's objectClass
      */
     public static final String SERVICE_OBJECTCLASS = "service.objectClass";

     /**
      *
      * A service's persistent identity.
      */
     public static final String SERVICE_PID = Constants.SERVICE_PID;

     /**
      *
      * The time when the event occurred, as reported by
      * System.currentTimeMillis()
      */
     public static final String TIMESTAMP = "timestamp";

     /**
      * This constant was released with an incorrect spelling. It has been
      * replaced by {@link #EXCEPTION_CLASS}
      *
      * @deprecated As of 1.1, replaced by EXCEPTION_CLASS
      */
     public static final String EXECPTION_CLASS = "exception.class";
 }
